home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / sh3x / sh33a.d64 / quellcode giga (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  7KB  |  290 lines

  1. 10 ;*********************************
  2. 20 ;
  3. 30 ;         MODERN ERASE
  4. 40 ;         USRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSR
  5. 50 ; (C) 1988 BY DIRK NEUMEISTER
  6. 60 ;
  7. 70 ; SIZE   : $C000
  8. 80 ; LAENGE :   382 BYTE
  9. 90 ; SOURCE :  6515 BYTE
  10. 100 ;
  11. 110 ;*********************************
  12. 120 ;
  13. 130 ;
  14. 140 +$C000
  15. 150 ;
  16. 160 TAB(VIC=53248
  17. 170 TAB(CIA2=$DD00
  18. 180 TAB(BILD=648
  19. 190 TAB(BILD1=$0400
  20. 200 TAB(BILD2=$C400
  21. 210 ;
  22. 220 TOSATZ=$D000
  23. 230 TOZIEL=$E000
  24. 240 TOZEIGER=$FA
  25. 250 TOPOINTER=$FD
  26. 260 TOCLEAR=$E544
  27. 270 TOFLAG=$FC
  28. 280 TOKOMMA=$AEFD
  29. 290 TOGETBYTE=$B79E
  30. 300 TOGET=$0073
  31. 310 ;
  32. 320 ;
  33. 330 ;
  34. 340 ;*********************************
  35. 350 ;
  36. 360 ; AUSWERTUNG DES SYS-BEFEHLS
  37. 370 ;
  38. 380 ; SYS 49152 => LOESCHEN/ANZEIGEN
  39. 390 ;
  40. 400 ; SYS 49152,A,B,C,D,E,F,G,H
  41. 410 ;
  42. 420 ;       => REIHENFOLGE FESTLEGEN
  43. 430 ;
  44. 440 ;*********************************
  45. 450 ;
  46. 460 ;
  47. 500 START MID$#","; TEST AUF KOMMA
  48. 510  LEN#00
  49. 520  STR$($7A),Y
  50. 530  (null)START3; WENN NEIN, DANN DIREKT STARTEN
  51. 540  PEEK#08; SONST ACHT ZAHLEN, DIE DIE REIHENFOLGE ANGEBEN
  52. 550  (null)$F7
  53. 560 START2 (null)KOMMA
  54. 570  (null)GETBYTE; EINLESEN UND
  55. 580  (null)
  56. 590  PEEK$F7
  57. 600  (null)REIHENFOL,X; SPEICHERN
  58. 610  CHR$$F7
  59. 620  (null)START2
  60. 630 START3 (null)ZCLEAR; SELBST MODIFZ. CODE (JMP ($4C) = LOESCHEN,
  61. 640 ;                       ; BIT ($2A) = LADEN )
  62. 650 ;
  63. 660 ;
  64. 670 ;
  65. 680 ;*********************************
  66. 690 ;
  67. 700 ; VORBEREITUNG DER MODERN-ROUTINE
  68. 710 ;
  69. 720 ; ZUM ANZEIGEN
  70. 730 ;
  71. 740 ;*********************************
  72. 750 ;
  73. 760 ;
  74. 1000 ZLADEN POKEXYCLOSE(LADEBIT),VARIAB+1; ADR. VERKN.BYTE ZUM ANZEIGEN SCHREIBEN
  75. 1010  POKEXCLOSE$31,MODERN2-3; PROGRAMM FUER ZEICHENSATZLESEN AENDERN
  76. 1020  POKEXYCLOSE$D000,$FD; STARTADRESSE ZEICHENSATZ
  77. 1030  POKEXYCLOSE$E000,$FA; ENDADRESSE ZEICHENSATZ
  78. 1040  POKEXCLOSE$11,ODER; ODER-VERKNUEPUNG ZULASSEN
  79. 1050  POKEXCLOSE$A9,LDA; LDA-BEFEHL ERLAUBEN
  80. 1060  POKEXCLOSE$08,FLAG; FLAG FUER ACHT DURCHLAEUFE SETZEN
  81. 1070  (null)MODERN; DIE EIGENTLICHE ROUTINE AUFRUFEN
  82. 1080  VERSCHIEBECLOSE$C400,$C800,$0800
  83. 1090  BILD0400; UND WIEDER AUF ORIGINALBILDSCHIRM UMSCHALTEN
  84. 1100  POKEACLOSE$4C,START3; JMP-BEFEHL ERLAUBEN => SYS49152 = LOESCHEN
  85. 1110  (null)
  86. 1120 ;
  87. 1130 ;
  88. 1140 ;
  89. 1150 ;*********************************
  90. 1160 ;
  91. 1170 ; VORBEREITUNG DER MODERN-ROUTINE
  92. 1180 ;
  93. 1190 ; ZUM LOESCHEN
  94. 1200 ;
  95. 1210 ;*********************************
  96. 1220 ;
  97. 1230 ;
  98. 2000 ZCLEAR RAMCLOSE$31; ZEICHENSATZ KOPIEREN
  99. 2010  COPYCLOSESATZ,$02,ZIEL,$04,4
  100. 2020  ROM
  101. 2030  VERSCHIEBECLOSE$0400,$0800,$C800;BILDSCHIRM KOPIEREN
  102. 2040  BILDC400; UND NACH $C400 UMSCHALTEN
  103. 2050  POKEAXCLOSE(LOESCHBIT),VARIAB+1; AUF ZEICHEN LOESCHEN UMSCHALTEN
  104. 2060  POKEXCLOSE$34,MODERN2-3; ZUGRIFF AUF ROM UND NICHT AUF ZEICHENSATZ
  105. 2070  POKEXYCLOSE$E000,$FA; ZEICHENSATZ BEI $E000 KENNZEICHNEN
  106. 2080  POKEXYCLOSE$E000,$FD
  107. 2090  POKEXCLOSE$24,ODER; ODER-VERKUEPFUNG UNTERBINDEN (ODER => BIT ($24))
  108. 2100  POKEXCLOSE$24,LDA; LDA-VERKNUEPFUNG VERBIETEN (LDA => BIT ($24))
  109. 2110  POKEXCLOSE$08,FLAG; FLAG FUER ACHT DURCHLAEUFE SETZEN
  110. 2120  (null)MODERN; DIE EIGENTLICHE ROUTINE AUFRUFEN
  111. 2130  (null)CLEAR; BILDSCHIRM LOESCHEN
  112. 2140  POKEACLOSE$2A,START3; BEI NAECHSTEN AUFRUF: 'ZEICHEN LADEN'(KEIN JMP)
  113. 2150  (null)
  114. 2160 ;
  115. 2170 ;
  116. 2180 ;
  117. 2190 ;*********************************
  118. 2200 ;
  119. 2210 ; EIGENTLICHE ROUTINE ZUM
  120. 2220 ;
  121. 2230 ; LOESCHEN UND ERSCHEINEN LASSEN
  122. 2240 ;
  123. 2250 ;*********************************
  124. 2260 ;
  125. 2270 ;
  126. 3000 MODERN RAMCLOSE$34; RAM/ZEICHENSATZ EINSCHALTEN
  127. 3010 MODERN2 MID$REIHENFOL,X; VERKNUEPFUNGSBYTE IN ABHAENGIGKEIT DER ZU
  128. 3020  (null); BEARBEITENDEN SPEICHERSTELLE UND
  129. 3030 VARIAB MID$LADEBIT,Y; REIHENFOLGE LADEN
  130. 3040  LEN#00
  131. 3050  ASC(POINTER),Y; UND MIT DER SPEICHERSTELLE VERKNUEPFEN
  132. 3060 ODER (null)(ZEIGER),Y; (LOESCHEN: NUR 'AND', LADEN: 'AND' & 'ORA')
  133. 3070  (null)(ZEIGER),Y
  134. 3080  (null)
  135. 3090  (null)MODERN3; X UM EINS ERNIEDRIGEN, WENN KLEINER ALS 1, DANN
  136. 3100  PEEK#08; WIEDER AUF 8 SETZEN
  137. 3110 MODERN3 RIGHT$ZEIGER; ZEIGER UM EINS ERHOEHEN
  138. 3120  RIGHT$POINTER
  139. 3130  (null)MODERN4
  140. 3140  RIGHT$ZEIGER+1
  141. 3150  RIGHT$POINTER+1
  142. 3160 MODERN4 MID$ZEIGER+1; TEST OB ALLE SPEICHERSTELLEN BEARBEITET WURDEN
  143. 3170  STR$#$F0
  144. 3180  (null)MODERN2; WENN NEIN, DANN WIEDER ZURUECK UND WEITERMACHEN
  145. 3190  POKEACLOSE$E0,ZEIGER+1; ZEIGER WIEDER ZURUECKSTELLEN
  146. 3200 LDA POKEACLOSE$D0,POINTER+1
  147. 3210  (null); REIHENFOLGE DER VERKNUEFUNGSBYTE UM 1 VERRINGERN
  148. 3220  (null)MODERN5
  149. 3230  PEEK#08
  150. 3240 MODERN5 LENFLAG; TEST, OB DER ZEICHENSATZ SCHON ACHT MAL
  151. 3250  (null); BEARBEITET WORDEN IST
  152. 3260  (null)FLAG
  153. 3270  (null)MODERN2; WENN NEIN, DANN WEITER
  154. 3280  ROM; SONST ROM WIEDER EINSCHALTEN
  155. 3290  (null); UND RUECKSPRUNG
  156. 3300 ;
  157. 3310 ;
  158. 3320 ;
  159. 3330 ;*********************************
  160. 3340 ;
  161. 3350 ; TABELLEN
  162. 3360 ;
  163. 3370 ; - VERKNUEPFUNGSBYTE ZUM LOESCHEN
  164. 3380 ;
  165. 3390 ; - VERKNUEPFUNGSBYTE ZUM ANZEIGEN
  166. 3400 ;
  167. 3410 ; - REIHENFOLGE DER ANWENDUNG
  168. 3420 ;
  169. 3430 ;*********************************
  170. 3440 ;
  171. 3450 ;
  172. 10000 LOESCHBIT FN127,191,223,239,247,251,253,254
  173. 10010 LADEBIT FN128,64,32,16,8,4,2,1
  174. 10020 REIHENFOL FN0,0,7,1,6,2,5,3,4
  175. 10030 ;
  176. 10040 ;
  177. 10050 ;
  178. 10060 ;*********************************
  179. 10070 ;
  180. 10080 ;      M A K R O S
  181. 10090 ;
  182. 10100 ; LOW LEVEL : - POKEAX
  183. 10110 ;             - POKEXY
  184. 10120 ;             - POKEA
  185. 10130 ;             - POKEX
  186. 10140 ;
  187. 10150 ; HIGH LEVEL: - BILDC400
  188. 10160 ;             - BILD0400
  189. 10170 ;             - ROM
  190. 10180 ;             - RAM
  191. 10190 ;             - VERSCHIEBE
  192. 10200 ;             - COPY
  193. 10210 ;
  194. 10220 ;*********************************
  195. 10230 ;
  196. 10240 ;
  197. 30000 GETPOKEAXCLOSEVAR,ADR; 16-BIT WERT SCHRIEBEN (VERWENDETE REGISTER: A,X)
  198. 30010  MID$#<(VAR)
  199. 30020  PEEK#>(VAR)
  200. 30030  (null)ADR
  201. 30040  (null)ADR+1
  202. 30050 NEW
  203. 30060 ;
  204. 30070 GETPOKEXYCLOSEVAR,ADR; 16-BIT WERT SCHREIBEN (VERWENDETE REGISTER: X,Y)
  205. 30080  PEEK#<(VAR)
  206. 30090  LEN#>(VAR)
  207. 30100  (null)ADR
  208. 30110  (null)ADR+1
  209. 30120 NEW
  210. 30130 ;
  211. 30140 GETPOKEACLOSEVAR,ADR; 8-BIT WERT SCHREIBEN (VERWENDETES REGISTER: A)
  212. 30150  MID$#VAR
  213. 30160  (null)ADR
  214. 30170 NEW
  215. 30180 ;
  216. 30190 GETPOKEXCLOSEVAR,ADR; 8-BIT WERT SCHREIBEN (VERWENDETES REGISTER: X)
  217. 30200  PEEK#VAR
  218. 30210  (null)ADR
  219. 30220 NEW
  220. 30230 ;
  221. 30240 ;* * * * * * * * * * * * * * * * *
  222. 30250 ;
  223. 30260 GETBILDC400; BILDSCHIRM IM BEREICH $C400 EINSCHALTEN
  224. 30270  MID$CIA2
  225. 30280  ASC#252
  226. 30290  (null)CIA2
  227. 30300  POKEXCLOSE196,BILD
  228. 30310  MID$VIC+24
  229. 30320  ASC#$F3
  230. 30330  (null)#24
  231. 30340  (null)VIC+24
  232. 30350 NEW
  233. 30360 ;
  234. 30370 GETBILD0400; BILDSCHIRM IM BEREICH $0400 EINSCHALTEN
  235. 30380  MID$CIA2
  236. 30390  (null)#03
  237. 30400  (null)CIA2
  238. 30410  POKEXCLOSE04,BILD
  239. 30420  MID$VIC+24
  240. 30430  ASC#$F3
  241. 30440  (null)#20
  242. 30450  (null)VIC+24
  243. 30460 NEW
  244. 30470 ;
  245. 30480 GETVERSCHIEBECLOSEANFANG,ENDE,NACH; ROM VERSCHIEBE-ROUTINE AUFRUFEN
  246. 30490  POKEXYCLOSEANFANG,$5F
  247. 30500  POKEXYCLOSEENDE,$5A
  248. 30510  POKEXYCLOSENACH,$58
  249. 30520  (null)$A3BF
  250. 30530 NEW
  251. 30540 ;
  252. 30550 GETROM; AUF ROM UMSCHALTEN
  253. 30560  (null)
  254. 30570  (null)$01
  255. 30580  (null)
  256. 30590 NEW
  257. 30600 ;
  258. 30610 GETRAMCLOSEVAR; AUF RAM/ZEICHENSATZ UMSCHALTEN
  259. 30620  (null)
  260. 30630  MID$$01
  261. 30640  (null)
  262. 30650  POKEACLOSEVAR,$01
  263. 30660 NEW
  264. 30670 ;
  265. 30680 GETCOPYCLOSEBEGINN,VAR1,ENDE,VAR2,LAENGE; 16-BIT VERSCHIEBE-ROUTINE
  266. 30690  POKEAXCLOSE(BEGINN),VAR1
  267. 30700  POKEAXCLOSE(ENDE),VAR2
  268. 30710  PEEK#LAENGE*8
  269. 30720  LEN#00
  270. 30730 COPY1 MID$(VAR1),Y
  271. 30740  (null)(VAR2),Y
  272. 30750  (null)
  273. 30760  (null)COPY1
  274. 30770  RIGHT$VAR1+1
  275. 30780  RIGHT$VAR2+1
  276. 30790  (null)
  277. 30800  (null)COPY1
  278. 30810 NEW
  279. 30820 ;
  280. 30830 ;
  281. 30840 ;
  282. 30850 ;*********************************
  283. 30860 ;
  284. 30870 ; ENDE DES QUELLCODE-LISTINGS
  285. 30880 ;
  286. 30890 ;*********************************
  287. 30900 ;
  288. 30910 ;
  289. 60000 <
  290.